package hu.bme.iit.szlab4.continuity;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Ajto extends Palyaelem {

	int zarakSzama;
	int meret;
	
	// Makkos
	// Ajto default konstruktor
	public Ajto(){
		zarakSzama = 0;
		meret = 0;
	}
	
	// Makkos
	// Ajto konstruktor "statikus" tagvaltozok beallitasahoz,
	// a palyaElemPoz a Palyaelem ososztalybol orokolt tagvaltozo
	public Ajto(Pozicio pos, int zarszam){
		palyaElemPoz = pos;
		zarakSzama = zarszam;
	}
	
	//Tukor
	public boolean metszette(Jatekos j) {
		// Input beolvasasanak elokeszitese
		BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));;
		String sor = "inic";
		
		//-------------------------------------
		//Meghivjuk a j:Jatekos getMeret metodusat
		Main.tabszam++;
		
		System.out.println(Main.getTabok() + "-->");
		//A hivasok szamat azert a Main hivaszam valtozoja alapjan irjuk ki, mert az opt-ok miatt az nem allando.
		System.out.println(Main.getTabok() + "1."+Main.hivasszam+".1. Hivott metodus: j.getMeret():int");
		
		//A konkret metodushivas
		j.getMeret();
		System.out.println(Main.getTabok() + "<- -");
		Main.tabszam--;
		
		//---------------------------------------
		//Meghivjuk a j:Jatekos getAktKoord metodusat
		Main.tabszam++;
		
		System.out.println(Main.getTabok() + "-->");
		//A hivasok szamat azert a Main hivaszam valtozoja alapjan irjuk ki, mert az opt-ok miatt az nem allando.
		System.out.println(Main.getTabok() + "1."+Main.hivasszam+".2. Hivott metodus: j.getAktKoord():Pozicio");
		
		//A konkret metodushivas
		j.getAktKoord();
		System.out.println(Main.getTabok() + "<- -");
		Main.tabszam--;
		
		System.out.println(Main.getTabok() + "Visszateresi ertek: Megadja, hogy a Jatekos metszette-e az Ajtot.");
		System.out.println(Main.getTabok() + "Logikai valtozo. Egy egesz szam megadasaval adhato meg, aminek jelentese: 0 - nem, 1 - igen.");
		System.out.println(Main.getTabok() + "Adja meg a visszateresi erteket!");
		//Visszateresi ertek bekerese a felhasznalotol.
		int i = 10; //i-t azert 10-es ertekkel inicializaljuk, mert a 0-as es 1-es ertek ertelmezve van a kesobbi logikai valtozo vizsgalatokban
		while((i != 0) && (i != 1)){
			try {
				sor = reader.readLine();
				i = Integer.parseInt(sor);
				if((i != 0) && (i != 1)){ 
					throw new Exception();
				}
			} catch (Exception e) {
				//Hibas inputot hibauzenettel es ujboli bekeressel kezeljuk.
				System.out.println(Main.getTabok() + "A bevitt visszateresi ertek nem felel meg a megkoteseknek! Ezek a kovetkezok:");
				System.out.println(Main.getTabok() + "Egesz szam. 0 vagy 1. Jelentese: 0 - nem, 1 - igen.");			}
		}
		System.out.println(Main.getTabok() + "Visszateresi ertek: " + i);
		
		return (i == 1) ? true : false;
	}

	// Makkos
	// 4. teszteset fuggvenye
	// a vegleges jatekban akkor fut le, ha a jatekos ajtoval talalkozik
	public boolean interakt(Jatekos j) {
		
		System.out.println("****************************************");
		System.out.println("Inicializalas. Objektumok letrehozasa.\n");
		System.out.println("Letrehozott objektum: a:Ajto");
		System.out.println("Letrehozott objektum: j:Jatekos\n");
		System.out.println("Inicializalas vege");
		System.out.println("****************************************");
		
		System.out.println("\n-->");
		System.out.println("1. ajto.interakt(j)\n");
		
			Main.tabszam++;
			System.out.println(Main.getTabok() + "-->");
			System.out.println(Main.getTabok() + "1.1 Hivott metodus: j.getKulcsSzam(): int");
				// jatekos kulcsszamanak lekerdezese
				int kulcsszam=-1;
				kulcsszam = j.getKulcsSzam();
				// teszteles a belso fuggvenyen kivul,
				// mivel a jatekos nem tudja a kulcsszamot
				while((kulcsszam < 0) || (kulcsszam>zarakSzama)){
					System.out.println(Main.getTabok() +
							"A bevitt visszateresi ertek nem felel meg a megkoteseknek! Ezek a kovetkezok:");
					System.out.println(Main.getTabok() +
							"A kulcsok szamanak 0 es a zarak szama kozott kell lennie. (zarak szama: " + zarakSzama + ")");
					kulcsszam = j.getKulcsSzam();
				}
				System.out.println(Main.getTabok() + "Visszateresi ertek: " + kulcsszam);
				
			System.out.println(Main.getTabok() + "<- -");
			
			Main.tabszam--;
			
			// a valaszt tarolo valtozo
			// alapertelmezesben ervenytelen
			int valasz = -1;
			
			// beolvasashoz szukseges valtozok
			BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
			String sor;
			
			// a fuggvenyben levo vizsgalat dontesenek bekerese
			System.out.println(Main.getTabok() + "Egyezik a zarak es a kulcsok szama?");
			System.out.println(Main.getTabok() + "0 - nem");
			System.out.println(Main.getTabok() + "1 - igen");
			
			do{
				// Input beolvasasa
				try {
					sor = reader.readLine();
					valasz = Integer.parseInt(sor);
				} catch (Exception e) {
					
				}
				// kilep a ciklusbol, ha a feltetel teljesul
				if((valasz==0)||(valasz==1)){
					break;
				}
				// hibakezeles
				System.out.println(Main.getTabok() +
						"A bevitt ertek nem felel meg a megkoteseknek! Ezek a kovetkezok:");
				System.out.println(Main.getTabok() +
						"Egesz szam. 0 vagy 1. Jelentese: 0 - nem, 1 - igen.");
			}while(true);
			
			// Mivel a szkeletonban meg nincsen logika, bekerjuk, hogy mi legyen
			// az interakt fuggveny visszateresi erteke
			System.out.println(Main.getTabok() + "Visszateresi ertek: Kimehet-e a jatekos az ajton vagy sem?");
			System.out.println(Main.getTabok() + "0 - nem");
			System.out.println(Main.getTabok() + "1 - igen");
			System.out.println(Main.getTabok() + "Adja meg a visszateresi erteket!");
			
			// a valaszt tarolo valtozo
			// alapertelmezesben ervenytelen
			valasz = -1;
			
			// visszateresi ertek beolvasasa,
			// elagazas a bekert dontes alapjan
			do{
				// Input beolvasasa
				try {
					sor = reader.readLine();
					valasz = Integer.parseInt(sor);
				} catch (Exception e) {
				
				}
				
				// nem mehet ki
				if(valasz == 0){
					System.out.println(Main.getTabok() + "Visszateresi ertek: " + false);
					System.out.println(Main.getTabok() + "<- -\n");
					
					// behuzas default ertekre allitasa
					Main.tabszam = 0;
					
					return false;
				}
				// kimehet
				else if(valasz == 1){
					System.out.println(Main.getTabok() + "Visszateresi ertek: " + true);
					System.out.println(Main.getTabok() + "<- -\n");
					
					// behuzas default ertekre allitasa
					Main.tabszam = 0;
					
					return true;
				}
				
				// hibas input kezelese
				System.out.println(Main.getTabok() +
						"A bevitt visszateresi ertek nem felel meg a megkoteseknek! Ezek a kovetkezok:");
				System.out.println(Main.getTabok() +
						"Egesz szam. 0 vagy 1. Jelentese: 0 - nem, 1 - igen.");
				
			}while(true);
	}

}
